﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CenyLetu
{
    /// <summary>
    /// Trigger pro automatické importování cen do systému. 
    /// Trigger se spouští každý pátek ve 20.05.
    /// </summary>
    class TriggerImportCen : ITrigger
    {
        /// <summary>
        /// Odhadovaný start v pátek 20.05.
        /// </summary>
        private DateTime predpokladanyCasSpusteni;
        /// <summary>
        /// Reálný start zahrnující posuvy času kvůli chybám nebo nedostupným datům.
        /// </summary>
        private DateTime casSpusteni;

        /// <summary>
        /// Hodina spuštění.
        /// </summary>
        private const int HodinaSpusteni = 20;
        /// <summary>
        /// Minuta spuštění.
        /// </summary>
        private const int MinutaSpusteni = 5;

        /// <summary>
        /// Konstruktor
        /// </summary>
        public TriggerImportCen()
        {
            DateTime now = DateTime.Now;

            casSpusteni = new DateTime(now.Year, now.Month, now.Day, HodinaSpusteni, MinutaSpusteni, 0);

            while (casSpusteni.DayOfWeek != DayOfWeek.Friday)
                casSpusteni = casSpusteni.AddDays(1);

            predpokladanyCasSpusteni = casSpusteni;
        }

        /// <summary>
        /// Vrací čas dalšího spuštění triggeru.
        /// </summary>
        /// <returns>Datum a čas dalšího spuštění triggeru.</returns>
        public DateTime DejCasDalsihoSpusteni()
        {
            return casSpusteni;
        }

        /// <summary>
        /// Provede trigger.
        /// </summary>
        public void Proved()
        {
            bool provedeno = new ImportCen().Importuj();
            if (!provedeno)
                casSpusteni = DateTime.Now.AddMinutes(5);
            else
                casSpusteni = predpokladanyCasSpusteni = predpokladanyCasSpusteni.AddDays(7);
        }
    }
}
